package com.wk.code.wkserver.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wk.code.wkserver.entity.DemandOrder;
import com.wk.code.wkserver.request.app.DemandOrderRequest;
import com.wk.code.wkserver.response.app.DemandOrderResponse;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author wq
 * @since 2021-08-15
 */
public interface IDemandOrderService extends IService<DemandOrder> {


    /**
     * 创建需求订单
     *
     * @param orderAmount 订单金额
     * @param techAmount  技术结算金额
     * @param demandId    需求ID
     * @param userId      用户ID
     * @param techUserId  技术用户ID
     */
    void createDemandOrder(BigDecimal orderAmount, BigDecimal techAmount,
                           Integer demandId, Integer userId, Integer techUserId);

    /**
     * 查询需求订单列表
     *
     * @param userId  用户ID
     * @param request 请求参数
     * @return List<DemandOrderResponse>
     */
    List<DemandOrderResponse> demandOrderList(Integer userId, DemandOrderRequest request);

    /**
     * 根据需求ID 查询订单
     *
     * @param demandId 需求ID
     * @return DemandOrder
     */
    DemandOrder selectByDemandId(Integer demandId);

    /**
     * 查询预计入账
     *
     * @param userId 用户ID
     * @return BigDecimal
     */
    BigDecimal selectEstimateAccount(Integer userId);

    /**
     * 我的接单订单列表
     *
     * @param userId  用户ID
     * @param request 请求参数
     * @return List<DemandOrderResponse>
     */
    List<DemandOrderResponse> mineTakingOrder(Integer userId, DemandOrderRequest request);

    /**
     * 删除需求订单
     *
     * @param demandId 需求ID
     */
    void deleteByDemandId(Integer demandId);
}
